//A进程创建共享内存
#include"common.h"
#include"comm.h"
       #include <signal.h>
PIPE init;
void handler(int signum)
{
    printf("i get a signal signum is:%d\n",signum);
}
int main()
{
    signal(SIGPIPE,handler);//屏蔽13号写端正常读端关闭后给进程发送的信号
    //1.创建key值,并通过key申请共享内存
    int shmid=CreateShm();
   //2.挂载到进程地址空间
   char*ptr=(char*)shmat(shmid,NULL,0);

   //开始通信前用管道进行双方之间的约定
   int fd=open(FIFO,O_WRONLY);//如果读端不打开文件它会阻塞在这
    if(fd==-1)exit(OPEN_ERR);

    //3.开始通信
    int i=5;
    while(i--)
    {
     //写
     char c='1';
     printf("please enter@\n");
     fgets(ptr,SIZE,stdin);//从键盘读到ptr
    ssize_t n= write(fd,&c,sizeof(c));//写完内存之后向管道写,读端关闭系统直接关掉进程
    if(n<0)break;
    }

    //4.取消关联
   int n= shmdt(ptr);
   if(n<0)printf("shmdt error!!\n");

    //5.释放共享内存
    shmctl(shmid,IPC_RMID,NULL);
    close(fd);
    return 0;
}